//剑指 Offer 18. 删除链表的节点
//思路：找到要删除的节点的前一个节点，将前一个节点的 next 指向被删除节点的 next

#include <stdlib.h>
struct ListNode {
    int val;
    struct ListNode* next;
};
struct ListNode* deleteNode(struct ListNode* head, int val) {
    if (head->val == val)//要删除的结点是头结点
        return head->next;

    struct ListNode* prev = head;
    while (prev->next->val != val && prev != NULL)//这里注意链表要不为空
    {
        prev = prev->next;
    }
    
    //连接
    prev->next = prev->next->next;

    return head;
}